.NET MAUI 单个项目中的多个平台为目标

您所在的位置:网站首页 android auto下载特定版本 .NET MAUI 单个项目中的多个平台为目标

.NET MAUI 单个项目中的多个平台为目标

2023-05-09 19:06| 来源: 网络整理| 查看: 265

.NET MAUI 单个项目中的多个平台为目标 项目 05/05/2023

.NET 多平台应用 UI (.NET MAUI) 单个项目采用开发应用时通常遇到的特定于平台的开发体验,并将其抽象化为面向 Android、iOS、macOS 和 Windows 的单个共享项目。

无论面向的平台如何,.NET MAUI 单一项目都提供简化且一致的跨平台开发体验。 .NET MAUI 单一项目提供以下功能:

一个可以面向 Android、iOS、macOS、Tizen 和 Windows 的共享项目。 用于运行 .NET MAUI 应用的简化调试目标选择。 单个项目中的共享资源文件。 一个应用清单,指定应用标题、ID 和版本。 根据需要访问特定于平台的 API 和工具。 单个跨平台应用入口点。

.NET MAUI 单一项目是使用多目标和 SDK 样式项目启用的。

资源文件

跨平台应用开发的资源管理传统上是有问题的,因为每个平台都有自己的资源管理方法。 例如,每个平台都有不同的映像要求,通常涉及以不同的分辨率创建每个映像的多个版本。 因此,单个图像通常必须以不同的分辨率多次复制,生成的图像必须在每个平台上使用不同的文件名和文件夹约定。

.NET MAUI 单一项目使资源文件可以存储在单个位置,同时在每个平台上使用。 这包括字体、图像、应用图标、初始屏幕、原始资产和用于设置 .NET MAUI 应用的样式的 CSS 文件。 每个映像资源文件都用作源映像,生成时为每个平台生成所需分辨率的映像。

注意

.NET MAUI 单一项目中当前不支持 iOS 资产目录。

资源文件通常应放置在 .NET MAUI 应用项目的 Resources 文件夹或 Resources 文件夹的子文件夹中,并且必须正确设置其生成操作。 下表显示了每种资源文件类型的生成操作:

资源 生成操作 应用图标 MauiIcon 字体 MauiFont 映像 茂宜岛Image 初始屏幕 MauiSplashScreen 原始资产 MauiAsset CSS 文件 MauiCss

注意

XAML 文件还存储在 .NET MAUI 应用项目中,当项目和项模板创建时,会自动分配 MauiXaml 生成操作。 但是,通常只会将 XAML 资源字典放置在应用项目的 Resources 文件夹中。

将资源文件添加到 .NET MAUI 应用项目时,项目文件中会创建资源对应的条目,CSS 文件除外。 以下屏幕截图显示了一个典型的 Resources 文件夹,其中包含每种资源类型的子文件夹:

如果资源已 添加到正确的 Resources 子文件夹,则会正确设置资源文件的生成操作。

可以通过编辑应用的项目文件,为每个资源类型指定 Resources 文件夹的子文件夹:

通配符 (*) 指示文件夹中的所有文件都将被视为指定资源类型。 此外,还可以包括子文件夹中的所有文件:

在此示例中,双通配符 ('**') 指定 Images 文件夹可以包含子文件夹。 因此, 指定 Resources\Images 文件夹中的任何文件或 Images 文件夹的任何子文件夹将用作源图像,从中为每个平台生成所需分辨率的图像。

特定于平台的资源将替代其共享资源对应资源。 例如,如果你有位于 Platforms\Android\Resources\drawable-xhdpi\logo.png的特定于 Android 的图像,并且还提供了共享 Resources\Images\logo.svg 图像,则将使用可缩放矢量图形 (SVG) 文件来生成所需的 Android 映像,但已作为特定于平台的图像存在的 XHDPI 图像除外。

应用图标

应用图标可以通过将图像拖动到项目的 Resources\AppIcon 文件夹中添加到应用项目,在该文件夹中,其生成操作将自动设置为 MauiIcon。 这会在项目文件中创建相应的条目:

在生成时,可以将应用图标调整为目标平台和设备的正确大小。 然后,将调整大小的应用图标添加到应用包中。 应用图标的大小调整为多个分辨率,因为它们具有多种用途,包括用于在设备和应用商店中表示应用。

有关详细信息,请参阅 将应用图标添加到 .NET MAUI 应用项目。

映像

通过将图像拖到项目的 Resources\Images 文件夹中,可以将图像添加到应用项目中,其中其生成操作将自动设置为 MauiImage。 这会在项目文件中创建相应的条目:

在生成时,可以将图像大小调整为目标平台和设备的正确分辨率。 然后将生成的图像添加到应用包。

有关详细信息,请参阅 将图像添加到 .NET MAUI 应用项目。

字体

(TTF) 或打开类型字体 (OTF) 字体,可以将其拖动到项目的 Resources\Fonts 文件夹中,将其添加到应用项目中,在该文件夹中,其生成操作将自动设置为 MauiFont。 这会在项目文件中按字体创建相应的条目:

在生成时,字体将复制到应用包。

有关详细信息,请参阅 字体。

初始屏幕

通过将图像拖动到项目的 Resources\Splash 文件夹中,可以将初始屏幕添加到应用项目,其中其生成操作将自动设置为 MauiSplashScreen。 这会在项目文件中创建相应的条目:

在生成时,初始屏幕图像将调整为目标平台和设备的正确大小。 然后,将调整大小的初始屏幕添加到应用包。

有关详细信息,请参阅 将初始屏幕添加到 .NET MAUI 应用项目。

原始资产

可以通过将原始资产文件(如 HTML、JSON 和视频)拖到项目 的资源\Raw 文件夹中添加到应用项目,在该文件夹中,其生成操作将自动设置为 MauiAsset。 这会在项目文件中为每个资产创建相应的条目:

然后,控件可以根据需要使用原始资产:

在生成时,原始资产将复制到应用包。

CSS 文件

.NET MAUI 应用可以使用级联样式表 (CSS) 文件进行部分样式设置。 通过将 CSS 文件拖到项目的任何文件夹中,并在“属性”窗口中将其生成操作设置为 MauiCss ,可以将 CSS 文件添加到应用项目中。

CSS 文件必须由 类加载 StyleSheet ,然后才能添加到 ResourceDictionary:

有关详细信息,请参阅 使用 CSS 设置应用样式。

应用部件清单

每个平台都使用自己的本机应用清单文件来指定应用标题、ID、版本等信息。 使用 .NET MAUI 单个项目,可以在项目文件的单个位置指定此通用应用数据。

若要指定项目的共享应用清单数据,请在 解决方案资源管理器 中打开项目的快捷菜单,然后选择“属性”。 然后,可以在 MAUI 共享 > 常规中指定应用标题、ID 和版本:

在生成时,共享应用清单数据与本机应用清单文件中特定于平台的数据合并,以生成应用包的清单文件。 有关详细信息,请参阅 .NET MAUI 中的项目配置 - MAUI 共享。

特定于平台的代码

.NET MAUI 应用项目包含 一个 Platform 文件夹,其中每个子文件夹表示 .NET MAUI 可以面向的平台:

每个平台的文件夹都包含特定于平台的资源,以及在每个平台上启动应用的代码:

在生成时,生成系统仅包含为该特定平台生成时每个文件夹中的代码。 例如,在为 Android 生成时, Platforms\Android 文件夹中的文件将内置到应用包中,但其他 “平台” 文件夹中的文件不会生成。 此方法使用多目标来面向单个项目中的多个平台。 多目标可以与分部类和分部方法结合使用,以从跨平台代码调用本机平台功能。 有关详细信息,请参阅 调用平台代码。

除了这种默认的多目标方法外,.NET MAUI 应用还可以根据自己的文件名和文件夹条件进行多目标处理。 这使你可以构建 .NET MAUI 应用项目,这样就不必将平台代码放入 Platforms 文件夹的子文件夹中。 有关详细信息,请参阅 配置多目标。

多目标还可以与条件编译结合使用,以便代码面向特定平台:

#if ANDROID handler.NativeView.SetBackgroundColor(Colors.Red.ToNative()); #elif IOS handler.NativeView.BackgroundColor = Colors.Red.ToNative(); handler.NativeView.BorderStyle = UIKit.UITextBorderStyle.Line; #elif WINDOWS handler.NativeView.Background = Colors.Red.ToNative(); #endif

有关条件编译的详细信息,请参阅 条件编译。

应用入口点

虽然 “平台” 文件夹包含在每个平台上启动应用的特定于平台的代码,但 .NET MAUI 应用具有单个跨平台应用入口点。 每个平台入口点对应用项目中的静态MauiProgram类调用一个CreateMauiApp方法,并返回一个 MauiApp,它是应用的入口点。

类 MauiProgram 必须至少提供一个应用才能运行:

namespace MyMauiApp; public static class MauiProgram { public static MauiApp CreateMauiApp() { var builder = MauiApp.CreateBuilder(); builder .UseMauiApp(); return builder.Build(); } }

类 App 派生自 Application 类:

namespace MyMauiApp; public class App : Application { public App() { InitializeComponent(); MainPage = new AppShell(); } }

在前面的示例中, MainPage 属性设置为 AppShell 对象。 AppShell 是描述应用的视觉层次结构的子类 Shell 。 有关详细信息,请参阅 创建 .NET MAUI Shell 应用。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3